<?php

App::uses('AppController', 'Controller');

/**
 * Movimientostubos Controller
 *
 * @property Movimientostubo $Movimientostubo
 */
class MovimientostubosController extends AppController {

    public $uses = array('Movimientostubo', 'Tubo', 'Cortestubo','Categoria');
    public $layout = 'imprenta';

    public function beforeFilter() {
        parent::beforeFilter();
        //$this->Auth->allow('*');
    }

    /**
     * index method
     *
     * @return void
     */
    public function index() {
        $this->Movimientostubo->recursive = 0;
        $this->set('movimientostubos', $this->paginate());
    }

    public function ingresoalmacen() {
        //debug($this->request->data);exit;
        $cantidad = $this->request->data['Movimientostubos']['cantidad'];
        $categoria = $this->request->data['Movimientostubos']['categoria'];
        $idProducto = $this->request->data['Movimientostubos']['producto_id'];
        $personaPresto = $this->request->data['Movimientostubos']['quienpresto'];
        
        if (!empty($this->request->data['Movimientostubos']['prestado'])) {
            $prestado = 'S';
        } else {
            $prestado = 'N';
        }
        $ultimoProducto = $this->Movimientostubo->find('first', array(
            'recursive' => -1,
            'order' => 'Movimientostubo.id DESC',
            'conditions' => array('Movimientostubo.tubo_id' => $idProducto)));

        if (empty($ultimoProducto)) {
            $this->request->data['Movimientostubo']['tubo_id'] = $idProducto;
            $this->request->data['Movimientostubo']['ingreso'] = $cantidad;
            $this->request->data['Movimientostubo']['cantidad'] = $cantidad;
            $this->request->data['Movimientostubo']['sucursale_id'] = 6;
            $this->request->data['Movimientostubo']['prestado'] = $prestado;
            $this->request->data['Movimientostubo']['quienpresto'] = $personaPresto;
            $this->request->data['Movimientostubo']['categoria_id'] = $categoria;

            $this->Movimientostubo->create();
            if ($this->Movimientostubo->save($this->request->data['Movimientostubo'])) {
                //echo 'guardo';
                $this->Session->setFlash('Ingreos Correctamente', 'msgbueno');
                //if($categoria == )
                $this->redirect(array('controller' => 'Tubos', 'action' => 'index', $categoria));
            } else {
                echo 'ni mierda';
            }
        } else {
            $cantidadEnAlmacen = $ultimoProducto['Movimientostubo']['cantidad'];
            $nuevaCantidad = $cantidad + $cantidadEnAlmacen;
            $this->request->data['Movimientostubo']['tubo_id'] = $idProducto;
            $this->request->data['Movimientostubo']['sucursale_id'] = 6;
            $this->request->data['Movimientostubo']['ingreso'] = $cantidad;
            $this->request->data['Movimientostubo']['cantidad'] = $nuevaCantidad;
            $this->request->data['Movimientostubo']['prestado'] = $prestado;
            $this->request->data['Movimientostubo']['quienpresto'] = $personaPresto;
            $this->request->data['Movimientostubo']['categoria_id'] = $categoria;
            $this->Movimientostubo->create();
            if ($this->Movimientostubo->save($this->request->data['Movimientostubo'])) {
                //echo 'guardo';
                $this->Session->setFlash('Ingreso Correctamente. !!!', 'msgbueno');
                $this->redirect(array('controller' => 'Tubos', 'action' => 'index', $categoria));
            } else {
                echo 'ni mierda';
            }
        }
        //debug($ultimoProducto);
    }

    public function sacartubos() {
        
    }

    public function vercortados($idTubo = null) {
        $tubosCortados = $this->Movimientostubo->find('all', array('recursive' => 0, 'conditions' => array(
                'Movimientostubo.tubo_id' => $idTubo,
                'Movimientostubo.estado <>' => 'A',
        )));
        $this->set(compact('tubosCortados'));
        //debug($tubosCortados);
    }

    /**
     * view method
     *
     * @throws NotFoundException
     * @param string $id
     * @return void
     */
    public function view($id = null) {
        if (!$this->Movimientostubo->exists($id)) {
            throw new NotFoundException(__('Invalid movimientostubo'));
        }
        $options = array('conditions' => array('Movimientostubo.' . $this->Movimientostubo->primaryKey => $id));
        $this->set('movimientostubo', $this->Movimientostubo->find('first', $options));
    }

    protected function _getultimoregistroproducto($idProducto = null) {
        $ultimoProducto = $this->Movimientostubo->find('first', array(
            'recursive' => -1,
            'order' => 'Movimientostubo.id DESC',
            'conditions' => array('Movimientostubo.tubo_id' => $idProducto)));
        return $ultimoProducto;
    }

    /**
     * add method
     *
     * @return void
     */
    public function add() {
        if ($this->request->is('post')) {
            $this->Movimientostubo->create();
            if ($this->Movimientostubo->save($this->request->data)) {
                $this->flash(__('Movimientostubo saved.'), array('action' => 'index'));
            } else {
                
            }
        }
        $productos = $this->Movimientostubo->Producto->find('list');
        $parentMovimientostubos = $this->Movimientostubo->ParentMovimientostubo->find('list');
        $almacens = $this->Movimientostubo->Almacen->find('list');
        $this->set(compact('productos', 'parentMovimientostubos', 'almacens'));
    }

    /**
     * edit method
     *
     * @throws NotFoundException
     * @param string $id
     * @return void
     */
    public function edit($id = null) {
        if (!$this->Movimientostubo->exists($id)) {
            throw new NotFoundException(__('Invalid movimientostubo'));
        }
        if ($this->request->is('post') || $this->request->is('put')) {
            if ($this->Movimientostubo->save($this->request->data)) {
                $this->flash(__('The movimientostubo has been saved.'), array('action' => 'index'));
            } else {
                
            }
        } else {
            $options = array('conditions' => array('Movimientostubo.' . $this->Movimientostubo->primaryKey => $id));
            $this->request->data = $this->Movimientostubo->find('first', $options);
        }
        $productos = $this->Movimientostubo->Producto->find('list');
        $parentMovimientostubos = $this->Movimientostubo->ParentMovimientostubo->find('list');
        $almacens = $this->Movimientostubo->Almacen->find('list');
        $this->set(compact('productos', 'parentMovimientostubos', 'almacens'));
    }

    /**
     * delete method
     *
     * @throws NotFoundException
     * @param string $id
     * @return void
     */
    public function delete($id = null) {
        $this->Movimientostubo->id = $id;
        if (!$this->Movimientostubo->exists()) {
            throw new NotFoundException(__('Invalid movimientostubo'));
        }
        $this->request->onlyAllow('post', 'delete');
        if ($this->Movimientostubo->delete()) {
            $this->flash(__('Movimientostubo deleted'), array('action' => 'index'));
        }
        $this->flash(__('Movimientostubo was not deleted'), array('action' => 'index'));
        $this->redirect(array('action' => 'index'));
    }

    public function registraventas() {
        //debug($this->request->data);die;
        $datosMovimientosTubos = $this->request->data['Movimientostubos'];
        $idTubo = $this->request->data['Movimientostubos']['0']['tubo_id'];
        $categoria = $this->request->data['Movimientostubos']['0']['categoria'];
        switch ($categoria) {
            case 18:
                $prefijo = 'L';
                break;

            case 19:
                $prefijo = 'B';
                break;

            case 20:
                $prefijo = 'P';
                break;
            default:
                break;
        }
        $ultimoMovimiento = $this->_getultimoregistroproducto($idTubo);
        //debug($ultimoMovimiento);
        $ultimaCantidad = $ultimoMovimiento['Movimientostubo']['cantidad'];
        $ultimaCantidadTemporal = 0;
        $sw = false;
        foreach ($datosMovimientosTubos as $dmt) {
            //debug($dmt);
            $this->request->data['Movimientostubo']['tubo_id'] = $dmt['tubo_id'];
            $this->request->data['Movimientostubo']['sucursale_id'] = 6;
            $this->request->data['Movimientostubo']['codigo'] = $prefijo.$dmt['codigo'];
            $this->request->data['Movimientostubo']['ingreso'] = 0;
            $this->request->data['Movimientostubo']['salida'] = 1;
            $this->request->data['Movimientostubo']['categoria_id'] = $categoria;

            if ($ultimaCantidadTemporal == 0) {
                $this->request->data['Movimientostubo']['cantidad'] = $ultimaCantidad - 1;
            } else {
                $this->request->data['Movimientostubo']['cantidad'] = $ultimaCantidadTemporal - 1;
            }
            $this->request->data['Movimientostubo']['estado'] = 'V';
            $this->request->data['Movimientostubo']['cliente'] = $dmt['cliente'];
            $this->request->data['Movimientostubo']['precio_venta'] = $dmt['precio'];
            $this->request->data['Movimientostubo']['propietario'] = $dmt['propietario'];
            $this->request->data['Movimientostubo']['ne'] = $dmt['ne'];
            $this->request->data['Movimientostubo']['nv'] = $dmt['nv'];

            $this->Movimientostubo->create();
            if ($this->Movimientostubo->save($this->request->data['Movimientostubo'])) {
                $ultimoIdTemporal = $this->Movimientostubo->getLastInsertID();
                if ($sw == false){
                    $sw = true;
                    $ini = $ultimoIdTemporal;
                }
                $fin = $ultimoIdTemporal;
                //debug($ultimoIdTemporal);
                $ultimosDatosTemporal = $this->Movimientostubo->find('first', array('recursive' => -1, 'conditions' => array('Movimientostubo.id' => $ultimoIdTemporal)));
                $ultimaCantidadTemporal = $ultimosDatosTemporal['Movimientostubo']['cantidad'];
                if ($ultimaCantidadTemporal == 0) {
                    $this->Session->setFlash("No puede vender insumos que no Tiene");
                    $this->redirect(array('action' => 'imprimirventa',$idTubo,$ini,$fin));
                }
                //debug($ultimosDatosTemporal);
            }
            //debug($this->request->data['Movimientostubo']);
        }
        //debug($ventas);exit;
        $this->redirect(array('action' => 'imprimirventa',$idTubo,$ini,$fin));        
    }
    
    public function imprimirventa($idTubo = null,$ini = null,$fin = null)
    {
        $sucursal = $this->Session->read('Auth.User.sucursale_id');
        $movimientos = $this->Movimientostubo->find('all', array(
        'conditions'=>array(
        'Movimientostubo.id >=' => $ini,
        'Movimientostubo.id <=' => $fin,
        'Movimientostubo.tubo_id' => $idTubo,
        'Movimientostubo.sucursale_id' => $sucursal)));
        //debug($movimientos);exit;
        $this->set(compact('movimientos','idTubo'));
    }

    public function registrarsalidas() {
        //debug($this->request->data);
        //die;
        $datosMovimientosTubos = $this->request->data['Movimientostubos'];
        $idTubo = $this->request->data['Movimientostubos']['0']['tubo_id'];
        $categoria = $this->request->data['Movimientostubos']['0']['categoria'];
        switch ($categoria) {
            case 18:
                $prefijo = 'L';
                break;

            case 19:
                $prefijo = 'B';
                break;

            case 20:
                $prefijo = 'P';
                break;
            default:
                break;
        }
        $ultimoMovimiento = $this->_getultimoregistroproducto($idTubo);
        //debug($ultimoMovimiento);
        $ultimaCantidad = $ultimoMovimiento['Movimientostubo']['cantidad'];
        $ultimaCantidadTemporal = 0;
        foreach ($datosMovimientosTubos as $dmt) {
            //debug($dmt);
            $this->request->data['Movimientostubo']['tubo_id'] = $dmt['tubo_id'];
            $this->request->data['Movimientostubo']['sucursale_id'] = $dmt['sucursale_id'];
            $this->request->data['Movimientostubo']['codigo'] = $prefijo.$dmt['codigo'];
            $this->request->data['Movimientostubo']['ingreso'] = 0;
            $this->request->data['Movimientostubo']['salida'] = 1;

            if ($ultimaCantidadTemporal == 0) {
                $this->request->data['Movimientostubo']['cantidad'] = $ultimaCantidad - 1;
            } else {
                $this->request->data['Movimientostubo']['cantidad'] = $ultimaCantidadTemporal - 1;
            }
            $this->request->data['Movimientostubo']['estado'] = 'E';
            $this->request->data['Movimientostubo']['categoria_id'] = $categoria;
            $this->request->data['Movimientostubo']['cliente'] = $dmt['cliente'];
            $this->request->data['Movimientostubo']['precio_venta'] = $dmt['precio'];
            $this->Movimientostubo->create();
            if ($this->Movimientostubo->save($this->request->data['Movimientostubo'])) {
                $ultimoIdTemporal = $this->Movimientostubo->getLastInsertID();
                $ultimosDatosTemporal = $this->Movimientostubo->find('first', array('recursive' => -1, 'conditions' => array('Movimientostubo.id' => $ultimoIdTemporal)));

                $datosTuboEnCortes = $this->Tubo->find('first', array(
                    'recursive' => -1,
                    'conditions' => array('Tubo.id' => $ultimosDatosTemporal['Movimientostubo']['tubo_id'])
                ));

                $this->request->data['Cortestubo']['tubo_id'] = $ultimosDatosTemporal['Movimientostubo']['tubo_id'];
                $this->request->data['Cortestubo']['sucursale_id'] = $dmt['sucursale_id'];
                $this->request->data['Cortestubo']['codigo'] = $prefijo.$dmt['codigo'];
                $this->request->data['Cortestubo']['categoria_id'] = $categoria;
                $this->request->data['Cortestubo']['alto'] = $datosTuboEnCortes['Tubo']['alto'];
                $this->request->data['Cortestubo']['peso'] = $datosTuboEnCortes['Tubo']['peso'];
                $this->request->data['Cortestubo']['estado'] = 'S';
                $this->request->data['Cortestubo']['prestado'] = 'N';
                $this->Cortestubo->create();
                $this->Cortestubo->save($this->request->data['Cortestubo']);

                $ultimaCantidadTemporal = $ultimosDatosTemporal['Movimientostubo']['cantidad'];
                if ($ultimaCantidadTemporal == 0) {
                    $this->Session->setFlash("No puede sacar insumos que no Tiene");
                    $this->redirect(array('controller' => 'Tubos', 'action' => 'verdetalle', $idTubo));
                }
                //debug($ultimosDatosTemporal);
            }
            //debug($this->request->data['Movimientostubo']);
        }
        $this->redirect(array('controller' => 'Tubos', 'action' => 'verdetalle', $idTubo));
    }

    public function quita() {
        //debug($this->request->data);
        $idProducto = $this->request->data['Movimientostubos']['tubo_id'];
        $cantidad = $this->request->data['Movimientostubos']['cantidad'];
        $idTubo = $this->_getultimoregistroproducto($idProducto);
        //debug($idTubo);die;        
        $data = array('id' => $idTubo['Movimientostubo']['id'], 'cantidad' => $cantidad);
        if ($this->Movimientostubo->save($data)) {
            $this->Session->setFlash('Cantidad Editada');
            $this->redirect(array('controller' => 'Tubos', 'action' => 'index'));
        }
    }
    
    public function detalle() {
        $movimientostubos = $this->Movimientostubo->find('all',array('conditions'=>array('Movimientostubo.prestado'=>'S')));
        $this->set(compact('movimientostubos'));
        //debug($movimientostubos);exit;
        
        
        //$movimientostubos = $this->Movimientostubo->find('all');
        //$this->set(compact('movimientostubos'));
        //debug($movimientostubos);exit;
    
    }

}
